//
// Created by 24319 on 2025/5/25.
//
#include "stm32f1xx_hal.h"
#include "tempSensor.h"
#include "adc.h"

float temperature;
/**
 * @brief 读取温度传感器值并转换为摄氏度
 *
 * 此函数启动ADC转换，读取传感器值，并根据公式将其转换为温度值。
 * 如果ADC转换超时或失败，将返回错误码。
 *
 * @return float 转换后的温度值（单位：摄氏度）
 *         -999.0f 表示ADC读取失败
 */
float ReadTemperature(void) {
    uint32_t adc_value;


    // 启动ADC转换
    HAL_ADC_Start(&hadc1);

    // 等待转换完成
    if (HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK) {
        // 获取ADC值
        adc_value = HAL_ADC_GetValue(&hadc1);

        // 计算公式：温度 = ((ADC值 × VREF/4096) - 1.43) / 0.0043 + 25
        temperature = ((float)adc_value * 3.3f / 4096.0f - 1.43f) / 0.0043f + 25.0f;

        return temperature;
    }

    return -999.0f; // 错误返回值
}